﻿using System.Collections.Generic;
using Roborally.Scheidsrechter;
using Roborally.CommonData.GlobaleTypes;

namespace Roborally.Spelleider
{
    public delegate SpelerGegevens VoerZetUitEvent(SpelerGegevens Speler, IProgramKaart Kaart);
    public delegate bool LegKaartNeerEvent(SpelerLegtKaartenArgs data);

    public interface ISpeler
    {
        /// <summary>
        /// De spelleider deelt kaarten uit. Het algoritme wordt gestart.
        /// </summary>
        /// <param name="Kaarten">Kaarten uitgedeeld a.d.h.v. de schadepunten.</param>
        /// <param name="Speler">Speler waar de AI de berekening voor uitvoert.</param>
        /// <param name="Bord">Huidige status van het bord.</param>
        void KrijgtKaarten(List<IProgramKaart> Kaarten, SpelerGegevens Speler, IModel Bord);

        /// <summary>
        /// Event wordt gebruikt om de definitieve keuze door te geven van een kaart.
        /// </summary>
        event LegKaartNeerEvent LegKaartNeer;

        /// <summary>
        /// Voert een test zet uit voor een kaart en een speler.
        /// </summary>
        event VoerZetUitEvent VoerZetUit;
    }
}
